package com.bestcem.xm.om.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.om.entity.UserPack;

import java.util.List;

/**
 * (UserPack)表服务接口
 *
 * @author makejava
 * @since 2022-04-01 18:45:54
 */
public interface UserPackService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    UserPack queryById(String id);

    /**
     * 新增数据
     *
     * @param userPack 实例对象
     * @return 实例对象
     */
    UserPack insert(UserPack userPack);

    /**
     * 修改数据
     *
     * @param userPack 实例对象
     * @return 实例对象
     */
    UserPack update(UserPack userPack);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(String id);

    /**
     * 根据套餐类型查询套餐新
     *
     * @param type
     * @return com.bestcem.xm.util.ServiceResult<java.util.List < com.bestcem.xm.om.entity.UserPack>>
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/6/21 16:15
     */
    ServiceResult<List<UserPack>> findByType(Integer type);

    /**
     * 查看套餐是否存在
     *
     * @param packageId
     * @param domainCode
     * @return java.lang.Boolean
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/6/21 17:12
     */
    Boolean hasPackageDomain(String packageId, String domainCode);

    /**
     * 查询套餐限额
     *
     * @param packId
     * @param orgId
     * @return com.bestcem.xm.util.ServiceResult<java.lang.String>
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/6/21 18:52
     */
    ServiceResult<String> getPackageQuota(String packId, String orgId);

    /**
     * listPackageIdsByCode
     * @param code
     * @param category
     * @return com.bestcem.xm.util.ServiceResult<java.util.List<java.lang.String>>
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/6/22 17:12
     */
    ServiceResult<List<String>> listPackageIdsByCode(String code, Integer category);

    /**
     * 根据合作商待会和套餐名称查询套餐id
     *
     * @param platformCode
     * @param packageName
     * @return com.bestcem.xm.util.ServiceResult<java.lang.String>
     * @author zhangfeng <feng.zhang@idiaoyan.com>
     * @date 2022/7/5 15:09
     */
    ServiceResult<String> getPackageIdByPlatformCodeAndPackageName(String platformCode, String packageName);

    /**
     * 删除套餐缓存
     * @param orgId
     * @return
     */
    ServiceResult<String> deletePackageCacheByOrgId(String orgId);
}
